package com.dymall.controller;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.dymall.common.domain.PageDTO;
import com.dymall.domain.dto.ItemDTO;
import com.dymall.domain.po.Item;
import com.dymall.domain.query.ItemPageQuery;
import com.dymall.service.ItemService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@Api(tags = "搜索相关接口")
@RestController
@RequestMapping("/search")
@RequiredArgsConstructor
public class SearchController {
    private final ItemService itemService;

    @ApiOperation("搜索商品")
    @GetMapping("/list")
    public PageDTO<ItemDTO> search(ItemPageQuery itemPageQuery){
        Page<Item> result = itemService.lambdaQuery().like(StrUtil.isNotBlank(itemPageQuery.getKey()), Item::getName, itemPageQuery.getKey())
                .eq(StrUtil.isNotBlank(itemPageQuery.getBrand()), Item::getBrand, itemPageQuery.getBrand())
                .eq(StrUtil.isNotBlank(itemPageQuery.getCategory()), Item::getCategory, itemPageQuery.getCategory())
                .between(itemPageQuery.getMaxPrice() != null, Item::getPrice, itemPageQuery.getMinPrice(), itemPageQuery.getMaxPrice())
                .page(itemPageQuery.toMpPage("update_time", false));//默认按更新时间排序，倒序
        return PageDTO.of(result, ItemDTO.class);//使用自定义的PageDTO的静态方法，将元素类型转为ItemDTO并封装到PageDTO中
    }
}
